program main
    implicit none
    integer :: n = 10
    integer, external :: fib
    write(*, *) n, fib(n)
end program main

! 要说明这个函数支持递归
! 说明返回的是哪个变量
recursive integer function fib(n) result(ans)    ! fib就不能当做返回了，只能ans返回
    implicit none                   
    integer, intent(in) :: n        

    if (n < 0) then
        ans = -1
        return
    else if(n<=2) then
        ans = 1
        return
    end if
    ans = n * fib(n-1)
    return                           
end